package com.enzoism.springboot.fastjson.a03thisnew;

public class DiveClass {
    void print() {
        System.out.println("------>print");
    }

    public InnerClass innerClass() {
        return new InnerClass();
    }

    public class InnerClass {
        public DiveClass outer() {
            // 添加this之后，产生的类型自动具有正确的类型
            // 在编译器就被知晓并接收检查，没有任何运行时开销
            // 就是当前【外部类的实例】hash值相等
            return DiveClass.this;
        }
    }

    public static void main(String[] args) {
        DiveClass diveClass = new DiveClass();
        System.out.println("------->hash:"+diveClass.toString());
        InnerClass innerClass = diveClass.innerClass();
        DiveClass outer = innerClass.outer();
        System.out.println("------->hash:"+outer.toString());
        outer.print();
    }
}
